package com.jiang.daily.Q75;

/**
 * @author Jiang
 * @version 1.0
 * @date 2025/05/17 20:30
 */
class Solution {
    // public void sortColors(int[] nums) {
    //     int n = nums.length;
    //     int pre = 0;
    //     for (int i = 0; i < n; i++) {
    //         if (nums[i] == 0) {
    //             int temp = nums[i];
    //             nums[i] = nums[pre];
    //             nums[pre] = temp;
    //             ++pre;
    //         }
    //     }

    //     for (int i = 0; i < n; i++) {
    //         if (nums[i] == 1) {
    //             int temp = nums[i];
    //             nums[i] = nums[pre];
    //             nums[pre] = temp;
    //             ++pre;
    //         }
    //     }
    // }

    public void sortColors(int[] nums) {
        int n = nums.length;
        int p0 = 0, p1 = 0;
        for (int i = 0; i < n; ++i) {
            if (nums[i] == 1) {
                int temp = nums[i];
                nums[i] = nums[p1];
                nums[p1] = temp;
                ++p1;
            } else if (nums[i] == 0) {
                int temp = nums[i];
                nums[i] = nums[p0];
                nums[p0] = temp;
                if (p0 < p1) {
                    temp = nums[i];
                    nums[i] = nums[p1];
                    nums[p1] = temp;
                }
                ++p0;
                ++p1;
            }
        }
    }
}
